home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’93 / SCSIPatch / Interfaces / PInterfaces / patch.p
Encoding:
Text File  |  1992-06-13  |  3.3 KB  |  126 lines  |  [TEXT/MPS ]

  1. {
  2.  ===========================================
  3.      Copyright Paul Baxter
  4.  ===========================================
  5.  
  6.  Use:
  7.  To see if patch is installed
  8.         VAR 
  9.            installed;
  10.         BEGIN
  11.             installed := SCSIPATCHAVAIL;
  12.         END;
  13.  
  14.  To start recording SCSI calls
  15.          VAR
  16.              result: OSErr;
  17.         BEGIN
  18.             result := SCSISTARTRECORD;
  19.         END;
  20.  
  21.  To stop recording SCSI calls
  22.          VAR
  23.              result: OSErr;
  24.         BEGIN
  25.             result := SCSISTOPRECORD;
  26.         END;
  27.         
  28.  To reset the buffer pointer
  29.          VAR
  30.              result: OSErr;
  31.         BEGIN
  32.             result := SCSIINITRECORD;
  33.         END;
  34.         
  35.  To get the buffer pointer and count
  36.          VAR
  37.              result: OSErr;
  38.             buffer: Ptr;
  39.             count: LONGINT;
  40.         BEGIN
  41.             result := SCSISENDRECORD(buffer, count);
  42.         END;
  43.  
  44.  ===========================================
  45.                buffer format
  46.  ===========================================
  47.  scsiReset command
  48.  0000 0000
  49.    |        |__Result Code Word
  50.    |________Routine Selector Word
  51.  
  52.  scsiGet command
  53.  0001 0000
  54.    |        |__Result Code Word
  55.    |_______Routine Selector Word
  56.  
  57.  scsiSelect, scsiSelAtn commands
  58.  (scsiSelect = 0002) (scsiSelAtn = 000B)
  59.  0002 0000 0000
  60.    |    |    |__Result Code Word
  61.     |    |_______SCSI ID
  62.    |____________Routine Selector Word
  63.  
  64.  scsiCmd command
  65.  0003 0006 0800 1C32 0100 0000
  66.    |    |    |    |    |    |__Result Code Word
  67.    |    |    |____|____|_______Command bytes
  68.     |    |______________________Length of Command
  69.    |___________________________Routine Selector Word
  70.  
  71.  scsiComplete command
  72.  0004 00C1 CE20 00D2 4130 0000 2E30 0000 0000 0000
  73.    |    |    |    |    |    |    |    |    |    |__Result Code Word
  74.    |    |    |    |    |    |    |    |    |_______Message Word Result
  75.    |    |    |    |    |    |    |    |____________Status Word Result
  76.    |    |    |    |    |    |____|_________________Completetion Time
  77.    |    |    |    |____|___________________________Message Word Pointer
  78.    |    |____|_____________________________________Status Word Pointer
  79.    |_______________________________________________Routine Selector Word
  80.  
  81.  scsiRead, scsiWrite, scsiRBlind, scsiWBlind commands
  82.  (scsiRead = 5) (scsiWrite = 0006) (scsiRBlind = 0008) (scsiWBlind = 0009)
  83.  0005 0001 001E 56D2 0000 0001 0007 0000 0000 0000 0000 0000
  84.    |    |    |    |    |    |    |    |    |    |    |    |__Result Code Word
  85.     |    |____|____|____|____|____|____|____|____|____|_______SCSIInstrs (TIB) up to scStop
  86.    |_________________________________________________________Routine Selector Word
  87.  
  88.  scsiStat command
  89.  000A 0000
  90.    |        |__Status Word
  91.    |_______Routine Selector Word
  92.  
  93.  scsiMsgIn command
  94.  000C 001E 2840 0001 0000
  95.    |    |    |    |    |__Result Code Word
  96.    |    |    |    |_______Message Word
  97.    |    |____|____________Message Word Pointer
  98.    |______________________Routine Selector Word
  99.  
  100.  scsiMsgOut command
  101.  000D 0001 0000
  102.    |    |    |__Result Code Word
  103.    |    |_______Message Word
  104.    |____________Routine Selector Word
  105.  
  106.  data_opcode command
  107.  0204 0008 0000 0000 0000 0000
  108.    |    |    |    |    |    |
  109.    |    |    |____|____|____|_Data
  110.     |    |_____________________Data Count
  111.    |__________________________Routine Selector Word
  112.  
  113. }
  114.  
  115. UNIT scsipatch;
  116.     INTERFACE
  117.     
  118.     CONST data_opcode = 516;
  119.     
  120.     FUNCTION SCSIPATCHAVAIL: integer;
  121.     FUNCTION SCSISTARTRECORD: OSErr;
  122.     FUNCTION SCSISTOPRECORD: OSErr;
  123.     FUNCTION SCSIINITRECORD: OSErr;
  124.     FUNCTION SCSISENDRECORD(VAR buffer: Ptr, VAR count : LONGINT): OSErr;
  125. END.
  126.